from fastapi import APIRouter, Path, Query

import typing as T
from ...pojo.vo import Result
from ..service.impl import UserHistoryService

router = APIRouter(prefix="/chatHistory", tags=["用户聊天记录服务接口"])


@router.get("/{sessionId}", response_model=Result)
async def getChatHistoryBySessionId(
    service: UserHistoryService,
    sessionId: T.Annotated[int, Path(description="会话id")],
    count: int = Query(
        description="需要的获取的聊天记录数【默认为-1，表示全部获取】", default=-1
    ),
):
    """
        # 获取聊天记录【倒叙排列】

        根据会话id获取聊天记录，根据查询参数count来控制获取的聊天记录数，默认为-1，表示全部获取

        ## 返回示例

        ```json
        {
            "code": 1,
            "msg": "success",
            "data": [
                {
                "id": 6,
                "sessionId": 1,
                "isAi": true,
                "content": [
                    {
                    "type": "text",
                    "text": "谢谢你的夸奖！ 😊 我很高兴能帮到你！如果以后还需要更多关于教学备课的帮助，或者想了解有趣的数学知识、笑话，随时都可以来找我哦！让我们一起让课堂变得更生动有趣吧！ 🚀
                            有什么其他问题或需求吗？"
                    }
                ]
                },
                {
                "id": 5,
                "sessionId": 1,
                "isAi": false,
                "content": [
                    {
                    "type": "text",
                    "text": "你真棒"
                    }
                ]
                },
                {
                "id": 4,
                "sessionId": 1,
                "isAi": true,
                "content": [
                    {
                    "type": "text",
                    "text": "当然可以！关于二次函数的笑话可能需要一点数学幽默感，以下是一个与二次函数相关的趣味小段子：
                            ---
                            **老师问小明：** 
                            “如果一个二次函数的图像开口向上，最低点在 (0, -3)，你能告诉我它的顶点坐标吗？”
                            **小明想了想，说：**  
                            “老师，这个问题太简单了，连抛物线自己都知道它的最低点在哪里——因为它‘心如止水’，永远停留在顶点 (0, -3)！”
                            **老师追问：**  
                            “那如果开口向下呢？”
                            **小明耸耸肩，答道：**  
                            “那它就变成了一位悲观主义者，总是觉得世界在往下掉，所以它的最高点就是它的‘人生巅峰’啦！”
                            ---
                            希望这个小笑话能让你会心一笑！如果你需要更正式的教学内容或教案设计，请随时告诉我哦！ 😊"
                    }
                ]
                },
                {
                "id": 3,
                "sessionId": 1,
                "isAi": false,
                "content": [
                    {
                    "type": "text",
                    "text": "你给我讲一个关于二次函数的笑话"
                    }
                ]
                },
                {
                "id": 2,
                "sessionId": 1,
                "isAi": true,
                "content": [
                    {
                    "type": "text",
                    "text": "你好！很高兴为你提供教学备课支持。请告诉我你需要备课的学科、年级、主题以及具体的需求，比如课时安排、教学目标或者学生的特点等，我会根据你的需求制定详细的备课方案！ 😊"
                    }
                ]
                },
                {
                "id": 1,
                "sessionId": 1,
                "isAi": false,
                "content": [
                    {
                    "type": "text",
                    "text": "你好"
                    }
                ]
                }
            ]
        }
        ```
    """

    data = await service.getChatHistory(sessionId, count)
    return Result.success(data)
